﻿using System;
using System.Collections.Generic;
using Loki.Data;

namespace Luna.Data.Budget
{
    public interface IBudgetProvider : IDataProvider
    {
        #region Categories

        void CategoryDelete(Guid categoryID);

        ICategoryData CategoryGet(Guid categoryID);

        IEnumerable<ICategoryData> CategoryGetAll();

        void CategorySave(ICategoryData category);

        #endregion Categories

        #region Budget

        void BudgetDelete(Guid budgetID);

        IBudgetData BudgetGet(Guid budgetID);

        IEnumerable<IBudgetData> BudgetGetAll();

        IEnumerable<IBudgetData> BudgetGetAllByMainBudget(Guid mainBudgetID);

        void BudgetSave(IBudgetData budget, IEnumerable<ILineData> lines);

        void BudgetSave(IBudgetData budget);

        #endregion Budget

        #region Lines

        void LineDelete(Guid lineID);

        ILineData LineGet(Guid lineID);

        IEnumerable<ILineData> LineGetAll();

        IEnumerable<ILineData> LineGetAllByBudget(Guid budgetID);

        void LineSave(ILineData line);

        #endregion Lines
    }
}